package mblog.base.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;

public final class UploadPicture {

	// 设置好账号的ACCESS_KEY和SECRET_KEY
	static String ACCESS_KEY = "5aZfPtTZP10rsriqnktyCKXjq99EX9z9wUAq-Yll";
	static String SECRET_KEY = "GpQbfN2VvsaKoItmyZzb_9DNf6FA1HuzkQEYOD9F";
	// 要上传的空间
	static String bucketname = "mblogpicture";//"uploadpic";

	// 密钥配置
	static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
	// 创建上传对象
	static UploadManager uploadManager = new UploadManager();

	// 简单上传，使用默认策略，只需要设置上传的空间名就可以了
	public static String getUpToken() {
		return auth.uploadToken(bucketname);
	}
	public static Map<String,String> getUpTokenMap(){
		String token = auth.uploadToken(bucketname);
		Map<String,String> mapToken = new HashMap<>();
		mapToken.put("uptoken",token);
		return mapToken;
	}

	//图片限定后缀名数组
	static String[] spePicSuff = { "gif", "png", "jpg", "bmp" };

	/**
	 * 验证后缀名是否是指定的图片后缀名 <br>
	 * 如果是指定格式的图片后缀，返回true；否则返回false
	 * 
	 * @param suffix
	 * @return
	 */
	public static Boolean isSpecPic(String suffix) {

		Boolean flag = false;
		for (String str : spePicSuff) {
			if (str.equals(suffix.toLowerCase())) {
				flag = true;
				break;
			}
		}
		return flag;
	}

	/**
	 * 
		 * 此方法描述的是：
		 * @author: cwftalus@163.com
		 * @version: 2016年8月31日 下午3:24:51
		 * @param FilePath 本地图片地址
		 * @param uploadName 上传之后的图片名字
	 */
	public static void upload(String FilePath, String uploadName) throws IOException {
		try {
			// 调用put方法上传
			Response res = uploadManager.put(FilePath, uploadName, getUpToken());
			// 打印返回的信息
			//System.out.println(res.bodyString());
		} catch (QiniuException e) {
			Response r = e.response;
			// 请求失败时打印的异常的信息
			//System.out.println(r.toString());
			try {
				// 响应的文本信息
				System.out.println(r.bodyString());
			} catch (QiniuException e1) {
				// ignore
			}
		}
	}

	public static void upload(byte[] datas, String uploadName) throws IOException {
		try {
			// 调用put方法上传
			Response res = uploadManager.put(datas, uploadName, getUpToken());
			// 打印返回的信息
			System.out.println(res.bodyString());
		} catch (QiniuException e) {
			Response r = e.response;
			// 请求失败时打印的异常的信息
			System.out.println(r.toString());
			try {
				// 响应的文本信息
				System.out.println(r.bodyString());
			} catch (QiniuException e1) {
				// ignore
			}
		}
	}

	/**
	 * 图片上传
	 * @author SeanYoung
	 * @throws IOException
	 */
//	public static String uploadImage(MultipartFile file) throws IOException {
//		Date date = new Date();
//		String fileDe = DateUtils.format(date, DateUtils.YMD);
//		String rootPath = PropertiesUtils.getProperty("upload.url");
//		StringBuffer realPath = new StringBuffer(rootPath);
//		realPath.append("/");
//		realPath.append(fileDe);
//		File fild = new File(realPath.toString());
//		//如果文件夹不存在则创建
//		if (!fild.exists() && !fild.isDirectory()) {
//			fild.mkdirs();
//		}
//		try {
//			byte[] b = file.getBytes();
//			String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
//			String fileName = new Date().getTime() + "." + suffix;//新生成的图片
//			//上传七牛云
//			UploadPicture.upload(b, "app/" + fileName);
//			String filePath = realPath.append("/").append(fileName).toString();
//			OutputStream out = new FileOutputStream(filePath);
//			out.write(b);
//			out.flush();
//			out.close();
//			//return DateUtils.format(date, DateUtils.YMD) + "/" + fileName;
//		/*	  //如果是windows系统,返回上传的全路径,否则返回
//			if(System.getProperty("os.name").toLowerCase().startsWith("win"))
//				return filePath.toString() + fileName;
//
//			else*/
//				return "app/" + fileName;
//
//		} catch (Exception e) {
//			e.printStackTrace();
//			return null;
//		}
//
//	}
}
